// MineUIInterface.h

#ifndef MINEUIINTERFACE_H
#define MINEUIINTERFACE_H

#include "Point.h"
#include "ObserverMineGrid.h"
#include "Observable.h"
#include <iostream>
//#include <SFML/System.hpp>

class MineUIInterface : public Observable
{
public:

	/**
	* Constructor.
	*
	* @param grid a pointer to the model to be used.
	*/
	MineUIInterface( ObserverMineGrid *mines ) : mines( mines ) { }

	/**
	* Destructor.
	*/
	virtual ~MineUIInterface() { };

	/**
	* Returns an action according to the input.
	*
	* @return char the action on the MineGrid.
	*/
	virtual char getAction() const = 0;

	/**
	* Returns a point according to the input.
	*
	* @return Point a point to a mine.
	*/
	virtual Point getPoint() const = 0;

	/**
	* Prints out the games ui.
	*/
	virtual void printUI() const = 0;

protected:
	// A pointer to the model.
	ObserverMineGrid *mines;
};

#endif // MINEUIINTERFACE_H
